package com.echo.im.domain.auth;

import cn.dev33.satoken.interceptor.SaInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author echo
 * @date 2024-08-16
 */
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {

    /**
     * 此方法将会注册一个 SaInterceptor 拦截器，该拦截器会拦截所有的请求路径（除了指定的排除路径），并使用 AuthHandler 进行登录校验。
     *
     * @param registry 拦截器注册器，用于添加拦截器。
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册 Sa-Token 拦截器，校验规则为 StpUtil.checkLogin() 登录校验。
        registry.addInterceptor(new SaInterceptor(new AuthHandler()))
                .addPathPatterns("/**")
                .excludePathPatterns("/auth/login", "/auth/register", "/auth/refreshToken", "/swagger/**", "/v3/api-docs/**",
                        "/swagger-resources/**", "/swagger-ui.html", "/swagger-ui/**", "/doc.html");
    }

}
